﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Infra.Common.DAO
{
    public class PaisDAL
    {
        public static void Salvar(Infra.Entity.LOCPAIS pais)
        {
            using (Infra.Entity.DBInfraEntityDataContext dc = new Entity.DBInfraEntityDataContext())
            {
                if (pais.CODPAIS != 0)
                {
                    //Alterar o país
                    var ps = dc.LOCPAIS.Single(p => p.CODPAIS == pais.CODPAIS);
                    ps.STRPAIS = pais.STRPAIS;
                    ps.STRNACIONALIDADE = pais.STRNACIONALIDADE;
                    dc.SubmitChanges();
                }
                else
                {
                    //Salvar o país
                    dc.LOCPAIS.InsertOnSubmit(pais);
                    dc.SubmitChanges();
                }
            }
        }

        public static void Excluir(int idPais)
        {
            using (Infra.Entity.DBInfraEntityDataContext dc = new Entity.DBInfraEntityDataContext())
            {
                var pais = dc.LOCPAIS.Single(ps => ps.CODPAIS == idPais);
                dc.LOCPAIS.DeleteOnSubmit(pais);
                dc.SubmitChanges();
            }
        }

        public static List<Infra.Entity.LOCPAIS> Pesquisar(int codigo, String nome, String nacionalidade)
        {
            List<Infra.Entity.LOCPAIS> paises = null;
            using (Infra.Entity.DBInfraEntityDataContext dc = new Entity.DBInfraEntityDataContext())
            {
                var ps = from pais in dc.LOCPAIS
                               where ((codigo.Equals(0) || codigo.Equals(pais.CODPAIS)) &&
                                       (nome.Equals(string.Empty) || nome.Equals(pais.STRPAIS.Contains(nome))))
                                       orderby nome ascending 
                               select pais;
                paises = ps.ToList();
            }
            return paises;
        }


        public static List<Infra.Entity.LOCPAIS> Pesquisar()
        {
            List<Infra.Entity.LOCPAIS> paises = null;
            using (Infra.Entity.DBInfraEntityDataContext dc = new Entity.DBInfraEntityDataContext())
            {
                  var ps = from pais in dc.LOCPAIS
                //         where ((codigo.Equals(0) || codigo.Equals(pais.CODPAIS)) &&
                //                 (nome.Equals(string.Empty) || nome.Equals(pais.STRPAIS.Contains(nome))))
                //         orderby nome ascending
                         select pais;
                paises = ps.ToList();
            }
            return paises;
        }


        public static List<Infra.Entity.LOCPAIS> PesquisarSP(int codigo, String nome, String nacionalidade)
        {
            List<Infra.Entity.LOCPAIS> paises = null;
            // Pesquisa usando Stored procedure
            using (Infra.Entity.DBInfraEntityDataContext dc = new Entity.DBInfraEntityDataContext())
            {
                // var ps = dc.SP_PESQUISA(codigo, nome);
                //paises = ps.ToList();
            }
            return paises;
        }

    }
}
